package com.netsdk.lib.structure;
import com.sun.jna.Pointer;

import com.netsdk.lib.NetSDKLib;
/**
 * @author 251823
 * @description 场景能力
 * @date 2021/01/11
 */
public class CFG_CAP_SCENE extends NetSDKLib.SdkStructure {
	/**
	 * 场景名称
	 */
    public byte[]           szSceneName = new byte[NetSDKLib.MAX_PATH];
	/**
	 * 当前规则类型支持的检测物体类型个数
	 */
    public int              nSupportedObjectTypeNum;
	/**
	 * 当前规则类型支持的检测物体类型列表
	 */
    public MaxNameByteArrInfo[] szObjectTypeName = (MaxNameByteArrInfo[])new MaxNameByteArrInfo().toArray(NetSDKLib.MAX_OBJECT_LIST_SIZE);
	/**
	 * 支持的规则个数
	 */
    public int              nSupportRules;
	/**
	 * 支持的规则列表
	 */
    public SCENE_SUPPORT_RULE[] stSpportRules = (SCENE_SUPPORT_RULE[])new SCENE_SUPPORT_RULE().toArray(NetSDKLib.MAX_RULE_LIST_SIZE);
	/**
	 * 是否支持扰动强度设置  
	 */
    public byte             bDisturbance;
	/**
	 * 是否支持去扰动处理
	 */
    public byte             bAntiDisturbance;
	/**
	 * 是否支持逆光处理
	 */
    public byte             bBacklight;
	/**
     *  是否支持阴影处理
     */
    public byte             bShadow;
    /**
     *  是否支持检测精度
     */
    public byte             bAccuracy;
    /**
     *  是否支持检测步长
     */
    public byte             bMovingStep;
    /**
     *  是否支持检测缩放
     */
    public byte             bScalingFactor;
    /**
     *  是否支持Y分量判定阈值
     */
    public byte             bThresholdY;
    /**
     *  是否支持UV分量判定阈值
     */
    public byte             bThresholdUV;
    /**
     *  是否支持边缘检测判定阈值
     */
    public byte             bThresholdEdge;
    /**
     *  是否支持检测平衡
     */
    public byte             bDetectBalance;
    /**
     *  是否支持算法序号
     */
    public byte             bAlgorithmIndex;
    /**
     *  是否支持高光处理，即Backgroud参数 
     */
    public byte             bHighlight;
    /**
     *  是否支持物体抓图
     */
    public byte             bSnapshot;
    /**
     *  是否支持检测区域配置
     */
    public byte             bDetectRegion;
    /**
     *  是否支持排除区域配置
     */
    public byte             bExcludeRegion;
    /**
     *  是否支持轮廓辅助跟踪
     */
    public byte             bContourAssistantTrack;
    /**
     *  是否摄像头位置参数
     */
    public byte             bCameraAspect;
    /**
     *  是否支持抖动参数
     */
    public byte             bJitter;
    /**
     *  是否支持去抖动处理参数
     */
    public byte             bDejitter;
    /**
     *  最大标定区域个数
     */
    public int              nMaxCalibrateAreaNum;
    /**
     *  标定区域能力信息个数
     */
    public int              nCalibrateAreaNum;
    /**
     *  标定区域能力信息
     */
    public CFG_CAP_CELIBRATE_AREA[] stCalibrateAreaCap = (CFG_CAP_CELIBRATE_AREA[])new CFG_CAP_CELIBRATE_AREA().toArray(NetSDKLib.MAX_CALIBRATEAREA_TYPE_NUM);
    /**
     *  是否支持像素计量方式
     */
    public byte             bPixel;
    /**
     *  是否支持实际长度计量方式
     */
    public byte             bMetric;
    /**
     *  是否支持远端近端标定后的像素计量方式
     */
    public byte             bCalibratedPixel;
    /**
     *  当前场景下支持的子场景类型
     */
    public MaxSceneSupTypeByteArrInfo[] szSubType = (MaxSceneSupTypeByteArrInfo[])new MaxSceneSupTypeByteArrInfo().toArray(NetSDKLib.MAX_SCENE_SUBTYPE_NUM);
    /**
     *  子场景类型个数
     */
    public int              nSubTypeNum;
    /**
     *  每个大类支持的最大规则条数
     */
    public int              nMaxRules;
    /**
     *  是否支持重建背景，默认不支持(false)
     */
    public int              bSupportedSetModule;
    /**
     *  是否支持打架标定配置,默认FALSE
     */
    public int              bSupportFightCalibrate;
    /**
     *  车辆种类划分类型个数
     */
    public int              nVehicleTypeSplitNum;
    /**
     *  车辆种类划分类型 { @link EM_VEHICLE_TYPE_SPLIT }
     */
    public int[]            emVehicleTypeSplit = new int[16];
    /**
     *  是否支持隐私保护, false-不支持(默认);true-支持
     */
    public int              bPrivacyMaskSupport;
    /**
     *  隐私保护的物体类型的数量
     */
    public int              nPrivacyMaskCount;
    /**
     *  隐私保护的物体类型 { @link EM_PRIVACY_MASK_TYPE }
     */
    public int[]            emPrivacyMaskTypes = new int[32];
    /**
     *  大类业务方案别名
     */
    public byte[]           szClassAlias = new byte[16];
    /**
     *  人群分布图的标定线段相关能力 
     */
    public CROWD_CALIBRATION stuCalibration;
    /**
     *  人体测温场景能力
     */
    public CFG_ANATOMYTEMP_DETECT_SCENE_CAPS stuAnatomyTempDetect;
    /**
     *  立体行为分析场景能力
     */
    public CFG_STEREO_BEHAVIOR_SCENE_CAPS stuStereoBehaviorCaps;
   /**
    * 姿态行为分析场景能力个数
    */
    public int              nGenealAttitudeCaps;
   /**
    * 姿态行为分析场景能力
    */
    public CFG_GENEAL_ATTITUDE_CAPS[] stuGenealAttitudeCaps = (CFG_GENEAL_ATTITUDE_CAPS[])new CFG_GENEAL_ATTITUDE_CAPS().toArray(128);
    /**
     * 车辆密度,由用户申请，内存大小为sizeof(CFG_VEHICLES_DISTRI),参见结构体定义 {@link com.netsdk.lib.structure.CFG_VEHICLES_DISTRI}
    */
    public Pointer          pstuVehiclesDistri;
    /**
     * 人群分布图,由用户申请，内存大小为sizeof(CFG_CROWD_DISTRI_MAP),参见结构体定义 {@link com.netsdk.lib.structure.CFG_CROWD_DISTRI_MAP}
    */
    public Pointer          pstuCrowdDistriMap;
    /**
     *  保留字节
     */
    public byte[]           byReserved = new byte[1024-2*NetSDKLib.POINTERSIZE];

	public CFG_CAP_SCENE() {
		for (int i = 0; i < szObjectTypeName.length; i++) {
			szObjectTypeName[i] = new MaxNameByteArrInfo();
		}
		for (int i = 0; i < stSpportRules.length; i++) {
			stSpportRules[i] = new SCENE_SUPPORT_RULE();
		}
		for (int i = 0; i < stCalibrateAreaCap.length; i++) {
			stCalibrateAreaCap[i] = new CFG_CAP_CELIBRATE_AREA();
		}
		
		for (int i = 0; i < szSubType.length; i++) {
			szSubType[i] = new MaxSceneSupTypeByteArrInfo();
		}
	}
}

